package com.encuestas;


import hilos.backup;
import hilos.backupdropbox;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONException;
import android.content.Context;
import android.database.SQLException;
import android.graphics.Bitmap;
import android.os.AsyncTask.Status;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;

import com.bd.DataBaseHelper;
import com.bd.dal;
import com.localizacion.gps;
import com.gio.lib.conexion.*;
import com.phonegap.*;

public class datosJavascript {

	dal datos;
	gps ubicacion;
	conectividad internet;
	backupdropbox bac;
	private Context contextodeaplicacion;
	private String tag="clase datosjavascript";
	private WebView mAppView;
    private DroidGap mGap;
    //DataBaseHelper dbcarga;
	
    
    public datosJavascript(Context contexto)
	{
    	// try {
		Log.i(tag, "clase datosjavascript iniciada");
		this.contextodeaplicacion= contexto;
		datos = new dal(contextodeaplicacion);
		//dbcarga= new DataBaseHelper(contextodeaplicacion);
		internet = new conectividad(contextodeaplicacion);
		ubicacion = new gps(contextodeaplicacion);
	
		
			 
		/*	 dbcarga.createDataBase();
	 
	 	} catch (IOException ioe) {
	 
	 		throw new Error("Unable to create database");
	 
	 	}
	 
	 	try {
	 
	 		dbcarga.openDataBase();
	 
	 	}catch(SQLException sqle){
	 
	 		throw sqle;
	 
	 	}*/
		
	}
    
	public datosJavascript(Context contexto, DroidGap gp, WebView vw)
	{
		//try {
		Log.i(tag, "clase datosjavascript iniciada");
		this.contextodeaplicacion= contexto;
		datos = new dal(contextodeaplicacion);
		internet = new conectividad(contextodeaplicacion);
		ubicacion = new gps(contextodeaplicacion);
		//dbcarga= new DataBaseHelper(contextodeaplicacion);
		mGap=gp;
		mAppView=vw;
		
	
			 
			/* dbcarga.createDataBase();
	 
	 	} catch (IOException ioe) {
	 
	 		throw new Error("Unable to create database");
	 
	 	}
	 
	 	try {
	 
	 		dbcarga.openDataBase();
	 
	 	}catch(SQLException sqle){
	 
	 		throw sqle;
	 
	 	}*/
		
	}
	
	
	//***************************  base de datos  ***********************************************
	public String maximoformulario(String tabla) {
		return datos.maximo(tabla);

	}

	public String leerencuestasql(String idformulario, String idproyecto,
			String tabla) {
		return datos.sqljson(idformulario, idproyecto, tabla);

	}

	public String encuestasincompletassql(int proyecto, int estado,String letra, int[] preguntas, String tabla) {

		return datos.jsonEstado(proyecto, estado, letra, preguntas, tabla);

	}

	public void cambiarestadosql(int proyecto, int formulario, int estado,
			String tabla) throws JSONException {

		datos.actualizarEstado(proyecto, formulario, estado, tabla);
	}

	public void guardarsql(String json, String tabla) throws JSONException {

		datos.guardarsql(json, tabla);

	}

	public String arreglosintrasnmitir(int proyecto, String tabla) {

		return datos.arreglosintransmitir(proyecto, tabla);

	}

	public void transmitidosql(int proyecto, int formulario, int transmitido,
			String tabla) {

		datos.transmitido(proyecto, formulario, transmitido, tabla);
	}

	public List<String> sintransmitir(String idformulario, String idproyecto,
			String tabla) {

		return datos.sintransmitir(idformulario, idproyecto, tabla);
	}
	
	public boolean userFromDB(String s, String as[]) {

		return datos.existeUserFromDb(s,as);
	}
	
	public String userFromDBst(String s, String as[]) {

		return datos.ExisteUserFromDbSt(s, as);
	}
	
	public void GuardarLog(int encuestador,int formulario,int pregunta, String imei, String valor)
	{
	
			datos.SaveLog(encuestador,formulario,pregunta, imei, valor);
		
	}
	
	public void GuardarMovimientos(int encuestador,int formulario, String imei, String fecha, String form, String accion)
	{
	
			datos.SaveMovimient(encuestador,formulario, imei, fecha,form,accion);
		
	}
	
	
	 public void savePregunta(String paramString)
	  {
	  
		 try
		 {
		 
		 if (this.datos.existeRegistro(paramString))
	    {
	    	 this.datos.updateRegistro(paramString);
	    	
	    }
	     
	    else
	    {
	    	this.datos.insertarOneRegistro(paramString);
	    	
	    }
		 }
		 catch (SQLException ex)
		 {
			 
			 Log.e("error de sqllite", ex.getMessage());
		 }
	  
	  }
	
	
	 public void changeEstadoEnviados(String dataserver)
	 {
		 
		 this.datos.changeEstadoEnviados(dataserver);
		 
	 }
	 
	 public List<String>noSend(String tabla)
	 {
		 
		return this.datos.noTransmitidos(tabla);
	 }
	 
	 
	 
	 public void borra (String tabla, String idproyecto, String idformulario, int pregActual, int pregFnal)
	 {
		 this.datos.borra(tabla, idproyecto, idformulario, pregActual, pregFnal);
	 }
	 
	 
	 public void insertBitmap(Bitmap b)
	 {
		 
		 this.datos.insertarBitmap(b);
	 }
	 
	 
	 public byte[]  getByteImage()
	 {
		return this.datos.getByteImage();
	 }
	 
	 public void insertarBitmap(Bitmap imagen, int proyecto, int formulario, int encuestador,int pregunta, String imei) 
	 {
		 this.datos.insertarBitmap(imagen, proyecto, formulario, encuestador, pregunta, imei);
	 }
	 
	 public byte[]  getBitmap(int proyecto, int formulario, int encuestador,int pregunta, String imei)
		{
		  return this.datos.getBitmap(proyecto, formulario, encuestador, pregunta, imei);
		}
	 
	 
	 
	 
	/* public Boolean validarCedula(int cedula)
	 {
		 return dbcarga.validaCedula(cedula);
	 }*/
	//***************************** fin base de datoss  ***********************************************
	
	
	//***************************** internet    *******************************************************
	
public boolean CheckInternet() {
		
		if (internet.verificaConex())
			
			return true;
		else
		utilidades.Mensaje("No hay conexion a internet", "no hay conexion a internet", contextodeaplicacion);	
		
			return false;	
	}


public boolean CheckConectivityMobile()
{
	return internet.CheckConectivityMobile();

}

public boolean CheckConectivityWifi()
{
	return internet.CheckConectivityWifi();

}



	
//***************************** fin internet    **********************************************************	
	
//***************************  localizacion   **********************************************************


public boolean CheckLocalizacionGPSmovil() {
	
	
		return ubicacion.checkGpsMobil();
			
	
}


public boolean CheckLocalizacionGPSatelital() {
	
	return ubicacion.checkGpsSatelital();
	
		
	
}



public String obtenerlatitudgps() {

	return ubicacion.oblatitudgps();
}


public String obtenerlatitudmobil() {

	return ubicacion.oblatitudmobil();
}

public String obtenerlongitudgps() {
	return ubicacion.oblongitudgps();

}


public String obtenerlongitudmobil() {
	return ubicacion.oblongitudmobil();

}
/*
if(ubicacion.conectargps(contextodeaplicacion))
{

	String latitud =  ubicacion.oblatitudgps();
	String longitud = ubicacion.oblongitudgps();
	//Toast.makeText(getApplicationContext(),"perfecto hubo ubicacion coordenadas gps:" + latitud + longitud, Toast.LENGTH_SHORT).show();
}



if(ubicacion.conectarmobil(contextodeaplicacion))
{

	String latitud =  ubicacion.oblatitudmobil();
	String longitud = ubicacion.oblongitudmobil();
	//Toast.makeText(getApplicationContext(),"perfecto hubo ubicacion coordenadas mobile:" + latitud + longitud, Toast.LENGTH_SHORT).show();
}

*/
	

//********************************************  fin localizacion    *************************************





//********************************************* hilos ***************************************************


public void backupDropbox()
{	
	

	bac= new backupdropbox(contextodeaplicacion);
	bac.execute(backup.COMMAND_BACKUP);


}





//********************************************* hilos ***************************************************









//********************************************* miscelanea


public String llenarlistaServidorGet() throws IOException
{
	 String resultadolistas="";
	 String sql="select * from municipio ";
	 String  codificado = URLEncoder.encode(sql, "UTF-8");
	
	try {
		 URL urllistas = new URL("http://r-visual.com/consultamovilencuestas.php?jsonw=" + codificado);
		 
		 resultadolistas = utilidades.ObtenerStRes(urllistas.openStream());
	} catch (MalformedURLException e) {
		
		e.printStackTrace();
	}
	return	 resultadolistas;
	 
	 
}

public	String llenarlistaServidorPost()
{
	String resultado="";
	HttpParams params= new BasicHttpParams();
	HttpConnectionParams.setConnectionTimeout(params, 60000);
	HttpConnectionParams.setSoTimeout(params, 60000);

	HttpClient cliente = new DefaultHttpClient(params);
try {

		//HttpPost post = new HttpPost("http://10.0.2.2/consultamovil.php");
		HttpPost post = new HttpPost("http://r-visual.com/consultamovilencuestas.php");

		List<NameValuePair>l = new ArrayList<NameValuePair>();
		l.add(new BasicNameValuePair("jsonw","select * from municipio where proyecto=2") );

		UrlEncodedFormEntity datos = new UrlEncodedFormEntity(l);

		post.setEntity(datos);
		HttpResponse respuesta = cliente.execute(post);

		HttpEntity  entiti = respuesta.getEntity();
		if (entiti!= null)
		{
		 resultado=utilidades.ObtenerStRes(entiti.getContent());
		}
		
		
}
		catch (IOException e) {
			Log.e("error de conexion", e.getMessage());
		}

		catch (IllegalArgumentException ar)
		{
			Log.e("error uyyy 2", ar.getMessage());

		}


		catch (Exception ex)
		{

			Log.e("error uyyy", ex.getMessage());
		}

return resultado;


	} 



/*public void ShowKeyBoard()
{
	

	
	InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
    // only will trigger it if no physical keyboard is open
    mgr.showSoftInput(mAppView, InputMethodManager.SHOW_IMPLICIT);

   ((InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(mAppView, 0);
	
	
	
}

public void hideKeyboard(DroidGap gsp, WebView vv)
{
	InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.hideSoftInputFromWindow(mAppView.getWindowToken(), 0);

}*/




}
